﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using log4net;
using Iudicium.Contactos;
using Iudicium.Contactos.CRN;
using System.Web.Script.Serialization;

public partial class UserControls_ContactSelector : System.Web.UI.UserControl
{
    private static readonly ILog log = LogManager.GetLogger("LogFile");

    #region Properties

    public int PropietarioId
    {
        set { PropietarioIdHiddenField.Value = value.ToString(); }
        get 
        {
            int propietarioId = 0;
            try
            {
                propietarioId = Convert.ToInt32(PropietarioIdHiddenField.Value);
            }
            catch (Exception ex)
            {
                log.Error("No se pudo convertir el valor de PropietarioIdHiddenField.Value a un valor entero", ex);
            }
            return propietarioId;
        }
    }

    public List<Contacto> InsertedContacts
    {
        get
        {
            List<Contacto> list = new List<Contacto>();
            try
            {
                JavaScriptSerializer js = new JavaScriptSerializer();
                list = js.Deserialize<List<Contacto>>(InsertedContactHiddenField.Value);
            }
            catch (Exception ex)
            {
                log.Error("No se pudo obtener la lista de contactos", ex);
            }
            return list;
        }
    }

    public string DeletedContacts
    {
        get
        {
            return DeletedContactHiddenField.Value.Replace("[", "").Replace("]", "");
        }
    }

    public Contacto.TipoPropietario TipoPropietario
    {
        set { TipoPropietarioHiddenField.Value = value.ToString(); }
        get 
        {
            return TipoPropietarioHiddenField.Value.Equals(Contacto.TipoPropietario.Oficina.ToString()) ?
                Contacto.TipoPropietario.Oficina : Contacto.TipoPropietario.Persona;
        }
    }

    public string ControlLabel
    {
        set { ControlLabelText.Text = value;}
        get { return ControlLabelText.Text; }
    }

    #endregion

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            List<Contacto> list = null;
            if (PropietarioId > 0)
            {

                try
                {
                    list = ContactoCRN.GetContactosByPropietario(PropietarioId, TipoPropietario);
                }
                catch (Exception ex)
                {
                    log.Error("No se pudo obtener la lista de Contactos para el Propietario " + PropietarioId +
                        " de tipo" + TipoPropietarioHiddenField.Value, ex);
                    list = new List<Contacto>();
                }
            }
            else
            {
                list = new List<Contacto>();
            }

            ContactRepetater.DataSource = list;
            ContactRepetater.DataBind();
        }
    }

    protected string GetCssClass()
    {
        return ClientID + "_Remove";
    }

    protected bool IsRepeaterVisible()
    {
        return ContactRepetater.Items.Count == 0;
    }

    protected void TipoContactoDataSource_Selected(object sender, ObjectDataSourceStatusEventArgs e)
    {
        if (e.Exception != null)
        {
            log.Error("No se pudo obtener correctamente la lista de Tipos de Contactos", e.Exception);
            e.ExceptionHandled = true;
        }
    }
    protected void TipoContactoDropDownList_DataBound(object sender, EventArgs e)
    {
        TipoContactoDropDownList.Items.Insert(0,new ListItem("Seleccione un tipo de Contacto", "0"));
    }
}
